// Magic Software, Inc.
// http://www.magic-software.com
// Copyright (c) 2000, All Rights Reserved
//
// Source code from Magic Software is supplied under the terms of a license
// agreement and may not be copied or disclosed except in accordance with the
// terms of that agreement.  The various license agreements may be found at
// the Magic Software web site.  This file is subject to the license
//
// FREE SOURCE CODE
// http://www.magic-software.com/License/free.pdf

#include "MgcRTLib.h"
#include "MgcString.h"

//----------------------------------------------------------------------------
MgcString::MgcString (const char* acString)
{
    if ( !acString )
    {
        m_acString = new char[1];
        m_acString[0] = 0;
        return;
    }

    unsigned int uiLength = strlen(acString);
    if ( uiLength == 0 )
    {
        m_acString = new char[1];
        m_acString[0] = 0;
        return;
    }

    m_acString = new char[uiLength+1];
    strcpy_s(m_acString,uiLength+1,acString);
}
//----------------------------------------------------------------------------
MgcString::MgcString (const MgcString& rkString)
{
    m_acString = 0;
    *this = rkString;
}
//----------------------------------------------------------------------------
MgcString::~MgcString ()
{
    delete[] m_acString;
}
//----------------------------------------------------------------------------
MgcString& MgcString::operator= (const MgcString& rkString)
{
    delete[] m_acString;
    m_acString = new char[strlen(rkString.m_acString)+1];
    strcpy_s(m_acString,strlen(rkString.m_acString)+1,rkString.m_acString);
    return *this;
}
//----------------------------------------------------------------------------
bool MgcString::operator== (const MgcString& rkString) const
{
    return strlen(m_acString) == strlen(rkString.m_acString)
        && strcmp(m_acString,rkString.m_acString) == 0;
}
//----------------------------------------------------------------------------
bool MgcString::operator!= (const MgcString& rkString) const
{
    return !operator==(rkString);
}
//----------------------------------------------------------------------------
unsigned int MgcString::GetLength () const
{
    return strlen(m_acString);
}
//----------------------------------------------------------------------------
MgcString::operator unsigned int () const
{
    // TO DO.  Implement.
    return 0;
}
//----------------------------------------------------------------------------
